package com.modificial.shiro.system.service;

import com.modificial.shiro.system.domain.SysRole;
import com.modificial.shiro.system.domain.SysUser;
import com.modificial.shiro.util.Page;

import java.util.List;
import java.util.Set;

/**
 * @author modificial
 * @date 2018/8/5 0005
 * @company modificial_org
 * @description 用户业务层
 */
public interface UserService {
    /**
     * 根据用户名查出用户
     * @param name 用户名字，唯一约束
     * @return 用户
     */
    SysUser  findUserByName(String name);

    /**
     * 添加系统用户
     * @param sysUser 系统用户
     * @return 1添加成功，0添加失败
     */
    int   addUser(SysUser sysUser);

    /**
     * 更新用户信息
     * @param sysUser 用户
     * @return 1更新成功，0更新失败
     */
    int  updateUser(SysUser sysUser);

    /**
     * 禁用或启用用户
     * @param userId 用户id
     * @param isEnable 禁用或启用
     * @return 1成功，0失败
     */
    int  disableUser(String userId,Integer isEnable);

    /**
     * 查询当前的系统用户
     * @return 系统用户
     */
    Page<SysUser> listUser(Integer nowPage, Integer pageSize);

    /**
     * 根据用户查询角色
     * @param userId 用户id
     * @return
     */
    List<SysRole> findRolesByUser(String userId);

    /**
     * 查询权限名字
     * @param userId
     * @return
     */
    Set<String> findPermissionsByUser(String userId);

    /**
     * 为用户授权
     * @param userId 用户id
     * @param roleId 角色id
     * @return
     */
    int  grantRoleForUser(String userId,String roleId);

    /**
     * 根据用户id查询用户
     * @param userId 用户id
     * @return
     */
    SysUser findUserById(String userId);

    /**
     * 根据用户id删除用户信息
     * @param userId 用户id
     * @return
     */
    int deleteUser(String userId);
}
